package com.fsz.pachong.pachong.util;

import com.baidu.aip.ocr.AipOcr;
import org.json.JSONArray;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

/**
 * @Description: 文字识别
 * @Author:
 * @Date: 2021/7/13
 * @Version: V1.0
 */
public class ORCUtil {
    //设置APPID/AK/SK
    public static final String APP_ID = "24537619";
    public static final String API_KEY = "tpfqPfp2LxfsNiDodsTi2j9Q";
    public static final String SECRET_KEY = "H1X69proL3UHaAkp021ymsHdxFK28CtZ";
    private static AipOcr client = null;

    static {
        // 初始化一个AipOcr
        client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);

        // 可选：设置网络连接参数
        // 建立连接的超时时间（单位：毫秒）
        client.setConnectionTimeoutInMillis(2000);
        // 通过打开的连接传输数据的超时时间（单位：毫秒）
        client.setSocketTimeoutInMillis(60000);

        // 可选：设置代理服务器地址, http和socket二选一，或者均不设置
           /* client.setHttpProxy("proxy_host", proxy_port);  // 设置http代理服务器
            client.setSocketProxy("proxy_host", proxy_port);  // 设置socket代理服务器 （http和socket类型代理服务器只能二选一）
*/
        // 可选：设置log4j日志输出格式，若不设置，则使用默认配置
        // 也可以直接通过jvm启动参数设置此环境变量
        System.setProperty("aip.log4j.conf", "classpath:log4j.properties");
    }

    // 用户向服务请求识别某张图中的所有文字
    public static String imgOCR(String url) {

        // 传入可选参数调用接口
        HashMap<String, String> options = new HashMap<String, String>();
        options.put("language_type", "CHN_ENG");
        options.put("detect_direction", "true"); // 是否检测图像朝向
        options.put("detect_language", "true"); // 是否检测语言当前支持（中文、英语、日语、韩语）
        options.put("probability", "true");

        // 通用文字识别, 图片参数为远程url图片
        JSONObject res = client.basicGeneralUrl(url, options);
        System.out.println(res.toString(2));

        // 组织word
        JSONArray jsonArray = res.getJSONArray("words_result");
        StringBuffer word = new StringBuffer();
        for (Object obj : jsonArray) {
            JSONObject jsonObject = (JSONObject) obj;
            System.out.println((String)jsonObject.get("words"));
            word.append((String)jsonObject.get("words"));
        }
        return res.toString(2);
        // 参数为本地图片路径
       /*     String image = "test.jpg";
            JSONObject res = client.basicGeneral(image, options);
            System.out.println(res.toString(2));

            // 参数为本地图片二进制数组
            byte[] file = readImageFile(image);
            res = client.basicGeneral(file, options);
            System.out.println(res.toString(2));
          */

    }

    public static void main(String[] args) {

        // 调用接口
        imgOCR("https://fuwu.most.gov.cn/u/cms/zwpt/201907/10143817ym2x.doc");
    }
}
